package tests;

import java.io.IOException;
import java.util.ArrayList;

import util.Pair;

import model.ArquivoEditor;
import model.Editor;

import junit.framework.TestCase;

/**
 * Classe de testes para o Editor
 * 
 * @author 
 *
 */
public class TestEditor extends TestCase {

	/**
	 * Verifica a integridade do singleton.
	 *
	 */
	public void testGetInstance() {
		Editor a = Editor.getInstance();
		Editor b = Editor.getInstance();
		assertEquals(a,b);
	}

	/**
	 * Testa a persistencia do editor
	 * 
	 * @throws IOException
	 */
	public void testSalvarCarregar() throws IOException {
		Editor ed = Editor.getInstance();
		ArquivoEditor a = new ArquivoEditor();
		a.setConteudo("ggg");
		String userDir = System.getProperty("user.dir");
		ed.salvar(a,userDir + "/salvar.txt");
		ArquivoEditor b = ed.abrir(userDir + "/salvar.txt");
		assertEquals(b.getConteudo(),a.getConteudo());
	}

	/**
	 * Verifica a integridade do método que cria instâncias de arquivos
	 *
	 */
	public void testArqFactory() {
		Editor a = Editor.getInstance();
		ArquivoEditor arq = a.arqFactory("conteudo");
		assertEquals("conteudo", arq.getConteudo());
	}
	
	/**
	 * Testa o método localizar.
	 *
	 */
	public void testLocalizar(){
		Editor ed = Editor.getInstance();
		assertTrue(ed.localizar("ABCDEF GHIJ LMNO PQRS", "GALO") == null);
		assertTrue(ed.localizar("ABCDEF GHIJ LMNO PQRS", "ABC").get(0).getFstElm() == 0);
		assertTrue(ed.localizar("ABCDEF GHIJ LMNO PQRS", "ABC").get(0).getSndElm() == 3);
	}
}
